Mastering Dynamic Memory Allocation in C Programming